/**
 *  说明：封装了get请求
 *  参数：接收一个对象（url，请求参数，回调函数）
 *  返回值：没有
 * */
function get(o) {
    // 1. 创建异步对象
    const xhr = new XMLHttpRequest()

    // 判断是否有查询参数
    // { id: 1, desc: 'hello' }   =>   id=1&desc=hello
    let url = '?'
    if(o.params) {
        for(const k in o.params) {
            // 键 k   值   o.params[k]
            url += k + '=' + encodeURI(o.params[k]) + '&'
        }
    }
    url = url.slice(0, -1);

    // 2. 编辑请求行信息
    xhr.open('get', o.url + url)

    // 2.1 监听响应事件
    xhr.onreadystatechange = function() {
        if(xhr.readyState !== 4) return
        if(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304) {
            // 如果成功之后，调用回调函数
            o.success(JSON.parse(xhr.responseText))
            // console.log(xhr.responseText);
        }
    }

    // 3. 发送请求
    xhr.send(null)
}




/**
 *  说明：封装了post请求
 *  参数：接收一个对象（url，请求参数，回调函数）
 *  返回值：没有
 * */
 function post(o) {
    // 1. 创建异步对象
    const xhr = new XMLHttpRequest()

    // 2. 编辑请求行信息
    xhr.open('post', o.url)

    // 2.1 监听响应事件
    xhr.onreadystatechange = function() {
        if(xhr.readyState !== 4) return
        if(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304) {
            // 如果成功之后，调用回调函数
            o.success(JSON.parse(xhr.responseText))
        }
    }

    // 3. 发送请求
    if(o.type && o.type === 'json') {
        xhr.setRequestHeader('Content-Type', 'application/json')
        xhr.send(JSON.stringify(o.data))
    } else {
        xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
        let body = ''
        for(const k in o.data) {
            // 键 k   值   o.params[k]
            body += k + '=' + encodeURI(o.data[k]) + '&'
        }
        body = body.slice(0, -1);
        xhr.send(body)
    }
}
